package com.ruoyi.system.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 校园活动对象 cams_activity
 *
 * @author anskory
 * @date 2024-04-07
 */
@Data
public class CamsActivity extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @TableId
    /** 主键 */
    private String id;

    /**
     * 标题
     */
    @Excel(name = "活动标题")
    private String title;
    /**
     * 图片
     */
    private String img;

    /**
     * 概要
     */
    @Excel(name = "活动概要")
    private String outline;

    /**
     * 内容
     */
    @Excel(name = "活动内容")
    private String content;

    /**
     * 负责人
     */
    @Excel(name = "活动负责人")
    private String responsiblePerson;

    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "活动开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date activityStartTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "活动结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date activityEndTime;

    /**
     * 活动地点
     */
    @Excel(name = "活动地点")
    private String activityPlace;

    /**
     * 报名开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报名开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 报名截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报名截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 人数上限
     */
    @Excel(name = "人数上限")
    private Integer upperLimit;

    /**
     * 发布状态（默认0代表未发布，1代表已发布）
     */
    private Boolean releaseStatus;

    /**
     * 发布时间
     */
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date releaseTime;

    /**
     * 删除标志（默认0代表存在 2代表删除)
     */
    private String delFlag;

    /**
     * 非数据库字段
     */


    /**
     * 单条报名数据，用于用户查看报名信息
     */
    @TableField(exist = false)
    private CamsEnrollInfo enrollInfo;
    /**
     * 多条报名数据，用于管理员/教师查看报名信息
     */
    @TableField(exist = false)
    private List<CamsEnrollInfo> enrollInfoList;
    /**
     * 报名人数
     */
    @Excel(name = "报名人数")
    @TableField(exist = false)
    private Integer signUpCount;

    /***
     * 是否报名
     */
    @TableField(exist = false)
    private Boolean isSignUp;
    /**
     * 签到人数
     */
    @Excel(name = "签到人数")
    @TableField(exist = false)
    private Integer signInCount;

    /**
     * 是否签到
     */
    @TableField(exist = false)
    private Boolean isSignIn;
    /**
     * 点赞记录
     */
    @TableField(exist = false)
    private List<CamsRecord> handUpList;

    /**
     * 是否点赞
     */
    @TableField(exist = false)
    private Boolean isHandUp;
    /**
     * 收藏记录
     */
    @TableField(exist = false)
    private List<CamsRecord> collectList;
    /**
     * 是否收藏
     */
    @TableField(exist = false)
    private Boolean isCollect;

    /**
     * 点赞人数
     */
    @Excel(name = "点赞人数")
    @TableField(exist = false)
    private Integer handUpCount;
    /**
     * 收藏人数
     */
    @Excel(name = "收藏人数")
    @TableField(exist = false)
    private Integer collectCount;

    /**
     * 浏览人数
     */
    @Excel(name = "浏览人数")
    @TableField(exist = false)
    private Integer viewCount;

}
